package com.tanhua.server.controller;

import com.tanhua.commons.utils.JwtUtils;
import com.tanhua.model.db.UserInfo;
import com.tanhua.server.service.UserService;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 保存用户资料
     *    POST    /loginReginfo
     *    Body参数： UserInfo
     *    请求头参数：Authorization
     *    返回值：void
     */
    @PostMapping("/loginReginfo")
    public void loginReginfo(@RequestBody UserInfo info, @RequestHeader("Authorization") String token) {
        //1、判断token
        boolean verifyToken = JwtUtils.verifyToken(token);
        if(!verifyToken) {
            throw new RuntimeException("用户未登录");
        }
        //2、解析token （用户id）
        Claims claims = JwtUtils.getClaims(token);
        Long id = claims.get("id", Long.class);
        //3、将用户id设置到info对象
        info.setId(id);
        //4、调用service
        userService.saveUserInfo(info);
    }

    /**
     * 设置头像：更新
     *   POST   /loginReginfo/head
     *   参数：
     *      headPhoto 文件（头像）
     *      请求参数是文件：不用管请求方式和参数类型
     *   请求头参数：Authorization
     *   返回值：void
     */
    @PostMapping("/loginReginfo/head")
    public void head(MultipartFile headPhoto, @RequestHeader("Authorization") String token) throws IOException {
        //1、获取参数
        //1.1、判断token
        boolean verifyToken = JwtUtils.verifyToken(token);
        if(!verifyToken) {
            throw new RuntimeException("用户未登录");
        }
        //1.2、解析token （用户id）
        Claims claims = JwtUtils.getClaims(token);
        Long id = claims.get("id", Long.class);
        //2、调用service
        userService.head(id,headPhoto);
    }

}
